 | | EXPRESIONES COMPARTIDAS |
“Cada lenguaje es una tradición, cada palabra un símbolo compartido” (Borges)
Definición
Toda expresión del lenguaje, sin excepción, se puede compartir, es decir, que puede pertenecer (ser común) a varias expresiones. Una modalidad de compartición es la autocompartición: cuando una expresión se comparte en su propio contexto.
La especificación de compartición se realiza mediante expresiones genéricas.
Ejemplos
- Compartición mediante un nombre.
Las secuencias x
e y
comparten la expresión v
.
(v = 11)
(x = (a 〈v〉 b))
(y = (〈v〉 c 〈v〉))
x // ev. (a 11 b)
y // ev. (11 c 11)
(v = 99)
(se cambia v
)
x // ev. (a 99 b)
(x cambia automáticamente)
y // ev. (99 c 99)
(y
cambia automáticamente)
- Compartición de un elemento de una secuencia.
Se define el tercer elemento de una secuencia y
siempre como el primer elemento de la secuencia x
:
(x = (a b c d))
(y = (3 7 〈x\1〉 4 5))
(el tercer elemento de y
es el primero de x
)
y // ev. (3 7 a 4 5)
(x = (u v w))
(se cambia x
)
y // ev. (3 7 u 4 5)
(y
cambia automáticamente)
- Compartición mutua de elementos entre dos secuencias.
(x = (a b c 〈y\1〉 d))
(el cuarto elemento de x
es el primero de y
)
(y = (3 7 4 5 〈x\(x#)〉))
(el último elemento de y
es el último de x
)
x // ev. (a b c 3 d)
y // ev. (3 7 4 5 d)
(x/5 = 55)
(cambiamos el último elemento de x
)
(y/1= 11)
(cambiamos el primer elemento de y
)
x // ev. (a b c 11 55)
(x
cambia automáticamente)
y // ev. (11 7 4 5 55)
(y
cambia automáticamente)
- Autocompartición. Unos elementos de una secuencia se definen a partir de otros elementos de la misma secuencia.
(x = (a b 〈x\1〉 〈x\2〉 c))
(el tercer y cuarto elemento de x
es el primero y el segundo, respectivamente, de la misma secuencia)
x // ev. (a b a b c)
(x\1 = u)
(cambiamos el primer elemento de x
)
(x\2 = v)
(cambiamos el segundo elemento de x
)
x // ev. (u v u v c)
(x
cambia automáticamente)
- Autocompartición de varios elementos consecutivos.
(x = (a b c [〈x\[1…3]〉]))
(los elementos 4, 5 y 6 de x
son iguales a los tres primeros)
x // ev. (a b c a b c)
(x\1 = u)
(cambiamos el primer elemento de x
)
(x\2 = v)
(cambiamos el segundo elemento de x
)
x // ev. (u v c u v c)
(x
cambia automáticamente)
- Compartición del contenido de un conjunto.
(x = {a b c d})
(y = {u v 〈x↓〉})
(y
consta de u
, v
y el contenido de x
)
y // ev. {u v a b c d}
(x = {3 4 5 6})
(se redefine x
)
y // ev. {u v 3 4 5 6}
(nuevo valor de y
)
- Compartición de una selección.
(x = {1 3 5 7 9})
(y = {u v 〈x⇓(<6)〉})
(y
consta de u
, v
y los elementos menores que 6 de x
)
y // ev. {u v 1 3 5}
(x = {2 4 6 8})
(se redefine x
)
y // ev. {u v 2 4}
(y
cambia automáticamente)
- Compartición mediante asignación de un nombre a un elemento compartido.
(x = (a b c d))
(v = 〈x\3〉)
(v
es siempre el tercer elemento de x
)
(y = (3 7 v☆3))
(y
consta de 3, 7 y tres elementos v
)
y // ev. (3 7 c c c)
(x = (e f g h))
(se redefine x
)
y // ev. (3 7 g g g)
(nuevo valor de y
)
(v = 〈x\4〉)
(se redefine v
)
y // ev. (3 7 d d d)
(nuevo valor de y
)
Secuencia circular
Es una secuencia que “se muerde la cola”, es decir, el siguiente elemento del último es el primero. La forma general es:
〈( x\i = x\(i - i÷(x#)) )〉
Es decir, siempre se utiliza el resto de la división entre i
y la longitud de la secuencia. Por ejemplo,
(x = (a b c d)
x\5 // ev. a
x\10 // ev. b
x\100 // ev. d
x\101 // ev. a
Estructuras de expresiones compartidas
Mediante la técnica de compartición, es posible definir todo tipo de estructuras. Por ejemplo, si simbolizamos una secuencia por una línea terminada en flecha, y un conjunto por un círculo, podemos especificar estructuras como las siguientes: